import axios from 'axios'
import config from '../config'
import StringUtils from '../utils/stringUtils.js'

const baseUrl = process.env.NODE_ENV === 'development' ? config.baseUrl.dev : config.baseUrl.pro
class HttpRequest {
	constructor(baseUrl) {
	    this.baseUrl = baseUrl
	}
	
	getInsideConfig(){
		const config = {
			baseUrl: this.baseUrl,
			header: {}
		}
		return config
	}
	interceptors (instance){
		//添加请求拦截器
		instance.interceptors.request.use(function(config){
			//在发送请求之前：添加请求头信息jwt token
			let token = localStorage.getItem("token")
			if (token) {
			  config.headers['Authorization'] = 'Bearer ' + token
			}
			return config;
		},function(error){
			//对请求错误做些什么
			return Promise.reject(error);
		});
		
		//添加响应拦截器
		instance.interceptors.response.use(function(response){
			//响应数据之前:获取最新jwt token
			if(response.headers['token']){
				//刷新保存token
				localStorage.setItem('token',response.headers['token'])
				localStorage.setItem('lastdate', StringUtils.formatDate(new Date()) )  //保存最后刷新时间
			}
			return response;
		},function(error){
			// console.log(error,'error')
			//对响应错误做点什么
			return Promise.reject(error);
		});
	}
	request(options){
		const instance = axios.create()
		options = { ...this.getInsideConfig(), ...options }
		this.interceptors(instance)
		return instance(options)
	}
}

export default new HttpRequest(baseUrl)